package org.example.mapper;

import org.apache.ibatis.annotations.*;
import org.example.pojo.Emp;
import org.example.pojo.EmpQueryParam;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

@Mapper
public interface EmpMapper {

    /*
    * 查询总的记录数量（未使用PageHelper）
    * */
    /*@Select("select count(*) from emp e left join dept d on e.dept_id = d.id")
    public Long count();*/

    /*
    * 分页查询（未使用PageHelper）
    * */
    /*@Select("select e.*, d.name deptName from emp e left join dept d on e.dept_id = d.id " +
            "order by e.update_time limit #{start}, #{pageSize}")
    public List<Emp> list(Integer start, Integer pageSize);*/

    /*
    * 分页查询（使用PageHeleper）
    * */

    // 使用PageHelper
    // public List<Emp> list(String name, Integer gender, LocalDate begin, LocalDate end);
    // 条件查询员工信息
    public List<Emp> list(EmpQueryParam empQueryParam);


    /*
    * 新增员工信息
    * */
    public void insert(Emp emp);

    /*
    * 删除员工信息
    * */
    void deleteByIds(List<Integer> ids);

    // 根据id查询员工信息
    Emp getById(Integer id);

    // 修改员工信息
    void updateById(Emp emp);

    // 统计各职务员工人数
    @MapKey("pos")
    List<Map<String, Object>> countEmpJobData();

    // 统计员工性别人数
    @MapKey("name")
    List<Map<String, Object>> countEmpGenderData();

    // 查询所有员工信息
    List<Emp> All();

    // 根据用户名和密码查询员工信息
    Emp getUsernameAndPassword(Emp emp);
}
